package com.lanchetech.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 商品交易订单
 */
@ApiModel(value = "商品交易订单")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Orders implements Serializable {
    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private Long id;

    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private Long userId;

    /**
     * 支付类型 0 微信支付 1 支付宝 2 银联
     */
    @ApiModelProperty(value = "支付类型 0 微信支付 1 支付宝 2 银联")
    private Byte payType;

    /**
     * 交易订单号
     */
    @ApiModelProperty(value = "交易订单号")
    private String tradeNo;

    /**
     * 支付总金额
     */
    @ApiModelProperty(value = "支付总金额")
    private BigDecimal totalPayAmount;

    /**
     * 已退款总金额
     */
    @ApiModelProperty(value = "已退款总金额")
    private BigDecimal totalRefundAmount;

    /**
     * 订单状态 0 未付款 1 已取消 2 已付款 3 待评价 4 已完成 5 已关闭
     */
    @ApiModelProperty(value = "订单状态 0 未付款 1 已取消 2 已付款 3 待评价 4 已完成 5 已关闭")
    private Byte status;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createdAt;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updatedAt;

    /**
     * 总运费
     */
    @ApiModelProperty(value = "总运费")
    private BigDecimal totalFreight;

    /**
     * 隐藏订单 0 未隐藏 1 已隐藏
     */
    @ApiModelProperty(value = "隐藏订单 0 未隐藏 1 已隐藏")
    private Byte hidden;

    /**
     * 支付时间
     */
    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    /**
     * 发货快递公司编码
     */
    @ApiModelProperty(value = "发货快递公司编码")
    private String logisticsCompany;

    /**
     * 发货快递单号
     */
    @ApiModelProperty(value = "发货快递单号")
    private String logisticsNumber;

    /**
     * 发货状态 0 未发货 1 已发货 2 已签收
     */
    @ApiModelProperty(value = "发货状态 0 未发货 1 已发货 2 已签收")
    private Byte logisticsStatus;

    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    private Date deliveryTime;

    /**
     * 用户留言
     */
    @ApiModelProperty(value = "用户留言")
    private String userMessage;

    /**
     * 平台备注
     */
    @ApiModelProperty(value = "平台备注")
    private String remark;

    /**
     * 完成时间
     */
    @ApiModelProperty(value = "完成时间")
    private Date completeTime;

    /**
     * 关闭时间
     */
    @ApiModelProperty(value = "关闭时间")
    private Date closeTime;

    /**
     * 商品总金额
     */
    @ApiModelProperty(value = "商品总金额")
    private BigDecimal totalProductAmount;

    /**
     * 关闭原因
     */
    @ApiModelProperty(value = "关闭原因")
    private Integer closeReason;

    /**
     * 主动关闭订单的退款订单号
     */
    @ApiModelProperty(value = "主动关闭订单的退款订单号")
    private String refundNo;

    /**
     * 购买类型 0 门店销售 1 线上销售-快递 2 线上销售-自提
     */
    @ApiModelProperty(value = "购买类型 0 门店销售 1 线上销售-快递 2 线上销售-自提")
    private Byte orderType;

    /**
     * 商家编号
     */
    @ApiModelProperty(value = "商家编号")
    private Long shopId;

    /**
     * 预约姓名
     */
    @ApiModelProperty(value = "预约姓名")
    private String name;

    /**
     * 预约手机号
     */
    @ApiModelProperty(value = "预约手机号")
    private String phone;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long tenantId;

    /**
     * 商户结算总金额（所有订单明细商品）
     */
    @ApiModelProperty(value = "商户结算总金额（所有订单明细商品）")
    private BigDecimal totalTenantAmount;

    /**
     * 结算金额冻结状态 0 完全冻结 1 部分解冻 2 完全解冻
     */
    @ApiModelProperty(value = "结算金额冻结状态 0 完全冻结 1 部分解冻 2 完全解冻")
    private Byte freezeStatus;

    /**
     * 订单种类
     */
    @ApiModelProperty(value = "订单种类")
    private Byte orderKind;

    /**
     * 订单标记
     */
    @ApiModelProperty(value = "订单标记")
    private Byte flag;

    /**
     * 抢购状态 0 待成团 1 抢购成功 2 抢购失败 3 已取消
     */
    @ApiModelProperty(value = "抢购状态 0 待成团 1 抢购成功 2 抢购失败 3 已取消")
    private Byte rushBuyStatus;

    /**
     * 抢购类型 0 抢购免单 1 直接购买
     */
    @ApiModelProperty(value = "抢购类型 0 抢购免单 1 直接购买")
    private Byte rushType;

    private static final long serialVersionUID = 1L;
}